﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Lab2.Andrew
{
    class Program
    {
        static void Main(string[] args)
        {

            int min = 10;
            int max = 100;

            PrintArray2(DoubleArrayFor(2, 3, min, max), 5, 10);

            Console.ReadKey();
        }

            
        // Метод Лаб2 - Ввести количество массивов - 10, 2. Ввести минимальное значение - -100, 3. Ввести максимальное значение - +100.
        // Программа генерирует кол массивов введенных с экрана и вывод их на экран. Смотреть фото на телефоне.



        // Создаем массив массивов FOR     
        public static int[,] DoubleArrayFor(int quantity, int length, int min, int max)
        {
              int[] arr = new int[length];
              int[,] res = new int[quantity, length];
              for (int i = 0; i < quantity; i++)
              {
                    arr = CreateRandomArray(length,min, max);
                    PrintArray(arr);
                    Console.WriteLine();
                    for (int j = 0; j < length; j++)
                    {
                       res[i,j] = arr[j];
                    }        
            }
            return res;
        }



        //  To print Array[][]
        static void PrintArray2(int[,] array,int row, int col)
        {
            for (int i = 0; i < row; i++)
            {                
                for (int j = 0; j < col; j++)
                {
                    Console.Write(" {0}", array[i,j]);
                }
                Console.WriteLine();
            }
        }

        

        
        // Создаем массив который переставляет местами элементы FOR
        public static void ReversArrayFor(int length)
        {
            int[] arr = new int[length];
            arr = CreateRandomArray(length, 1, 100);
            PrintArray(arr);
            Console.WriteLine();
            for (int i = 0; i < length/2; i++)
            {
                int a = arr[length - i - 1];
                arr[length - i - 1] = arr[i];
                arr[i] = a;                
            }
            PrintArray(arr);
        }



        // Создаем массив который переставляет местами элементы WHILE
        public static void ReversArrayWhile(int length)
        {
            int[] arr = new int[length];
            arr = CreateRandomArray(length, 1, 100);
            PrintArray(arr);
            Console.WriteLine();
            int i = 0;
            while (i < length / 2)
            {
                int a = arr[length - i - 1];
                arr[length - i - 1] = arr[i];
                arr[i] = a;
                i++;
            }
            PrintArray(arr);
        }


        // Создаем массив который переставляет местами элементы DO WHILE
        public static void ReversArrayDoWhile(int length)
        {
            int[] arr = new int[length];
            arr = CreateRandomArray(length, 1, 100);
            PrintArray(arr);
            Console.WriteLine();
            int i = 0;

            do
            {
                int a = arr[length - i - 1];
                arr[length - i - 1] = arr[i];
                arr[i] = a;
                i++;
            }
            while (i < length / 2);
            PrintArray(arr);
        }






        // Метода Лаб1 - вызов методов
        static void Lab1()
        {
            int[] array = CreateRandomArray(5, 1, 100);
            PrintArray(array);
            Console.ReadKey();
            Console.WriteLine();
            array = CreateSortedArray(5);
            PrintArray(array);
            Console.ReadKey();
        }



        // Создание массива от 0 до н
        static int[] CreateSortedArray(int arrayLength)
        {
            int[] result = new int[arrayLength];
            for (int i = 0; i < arrayLength; i++)
            {
                result[i] = i;
            }
                return result;
        }

        //  To print Array
        static void PrintArray(int[] array)
        {
            for (int i = 0; i < array.Length; i++)
            {
                Console.Write(" {0}", array[i]);
            }
        }

        //Создание рандомного массива массива
        static int[] CreateRandomArray(int length, int min, int max)
        {
            int[] array = new int[length];
            Random rnd = new Random();
            for(int i = 0; i < array.Length; i++)
            {
                array[i] = rnd.Next(min,max);                           
            }            
            return array;
        }
    }
}




/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


//namespace Lab2.Andrew
//{
//    class Program
//    {
//        static void Main(string[] args)
//        {
//            Console.WriteLine("Программа для расчета N!");
//            Console.WriteLine("Введите N.");
//            int input = ReadIntFromConsole();
//            double retFact = 1;
//            for (int i = 2; i <= input; i++)
//            {
//                retFact *= i;
//            }
//            Console.WriteLine("N! равен: {0}", retFact);
            
//            Console.ReadKey();
//        }
//        public static int ReadIntFromConsole()
//        {
//            int retVal = 0;
//            bool inputIsCorrect = false;
//            while (!inputIsCorrect)
//            {
//                try
//                {                   
//                    retVal = Int32.Parse(Console.ReadLine());
//                    inputIsCorrect = true;
//                    if (retVal <= 0)
//                    {
//                        throw new ArgumentException();
//                    }
//                }
//                catch
//                {
//                    Console.WriteLine("Введите натуральное число! Повторите ввод!");
//                }
//            }
//            return retVal;
//        }
//    }
//}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



//{
//    class Program
//    {
//        static void Main(string[] args)
//        {
//            Console.WriteLine("Программа считает сумму первых N натуральных чисел. N ввести с клавиатуры.");
//            Console.WriteLine("Нажмите 'c' чтобы остановить программу.");
//            int sum = 0;

//            while (true)
//            {
//                Console.WriteLine("Введите натуральное число");

//                int userInput = ReadUIntFromConsole();
//                if (userInput == -1)
//                {
//                    Console.WriteLine("Вы выбрали завершение работы программы. Нажмите любую клавишу, чтобы закрыть программу.");
//                    break;
//                }

//                sum += userInput;

//                Console.WriteLine("Сумма равна {0}", sum);
//            }
//            Console.ReadKey();
//        }
//        public static int ReadUIntFromConsole()
//        {
//            int retVal = 0;
//            while (true)
//            {
//                try
//                {
//                    string input = Console.ReadLine();

//                    if (input == "c")
//                        return -1;

//                    retVal = Int32.Parse(input);
//                    if (retVal <= 0)
//                    {
//                        throw new ArgumentException();
//                    }
//                    break;
//                }
//                catch
//                {
//                    Console.WriteLine("Введите натуральное число! Повторите ввод!");
//                }
//            }
//            return retVal;
//        }
//    }
//}






/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//{
//    class Program
//    {
//        static void Main(string[] args)
//        {
            
           
//            /*Console.WriteLine("Please, enter your name.");
//            String enteredName = Console.ReadLine();
//            Console.WriteLine("Hello, {0}!", enteredName);
//            Console.ReadLine();
//             */

//            /*Console.WriteLine("Enter the first number.");
//            double firstNumber=0;
//            try
//            {
//                firstNumber = Int32.Parse(Console.ReadLine());
//            }
//            catch
//            {
//                 Console.WriteLine("Shit happens!");
//            }
          
//                 Console.WriteLine("Enter the second number.");
//            int secondNumber = 0;

//            try
//            {
//                secondNumber = Int32.Parse(Console.ReadLine());
//            }
//            catch
//            {
//                Console.WriteLine("Shit happens again!");
//            }

//            double result = 0;
//            result = firstNumber / secondNumber;
                   
                     
//            Console.WriteLine("result is, {0}!", result);
//            Console.ReadLine();
//            */



//            Console.WriteLine("Enter the first number");
//            int a = 0;
//            try
//            {
//                a = Int32.Parse(Console.ReadLine());
//            }
//            catch
//            {
//                Console.WriteLine("You should enter the number");
//            }
            
//            Console.WriteLine("Enter the second number");
//            int b = 0;
//            try
//            {
//                b = Int32.Parse(Console.ReadLine());
//            }
//            catch
//            {
//                Console.WriteLine("You should enter the number too");
//            }           

//            testMethod (a,b);

//            Console.ReadLine();


//            Console.WriteLine("Enter the first number");
//            int c = 0;
//            try
//            {
//                c = Int32.Parse(Console.ReadLine());
//            }
//            catch
//            {
//                Console.WriteLine("You should enter the number");
//            }
            
//            Console.WriteLine("Enter the second number");
//            int d = 0;
//            try
//            {
//                d = Int32.Parse(Console.ReadLine());
//            }
//            catch
//            {
//                Console.WriteLine("You should enter the number too");
//            }
            
                        
//            testMethod (c,d);

//            Console.ReadLine();
                                 
//        }


//        static void testMethod (int a, int b)
//        {
            
//            if (a > b)
//                Console.WriteLine("{0} > {1}", a, b);
//            if (a < b)
//                Console.WriteLine("{0} < {1}", a, b);
//            if (a == b)
//                Console.WriteLine("{0} == {1}", a, b);
            
//        }   

//    }
//}
